package fr.musique.bean;

import java.io.Serializable;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.Table;

@Entity
@Table(name = "T_MUSIQUE")
public class Musique implements Serializable {

	private static final long serialVersionUID = 4439046811364963501L;

	public static enum Style {
		ROCK("Rock"), ELECTRO("electro"), DANCE("dance"), CLASSIQUE("classique"), BLUES(
				"blues"), JAZZ("jazz");

		protected String Style;

		Style(String Style) {
			this.Style = Style;
		}

		public String getStyle() {
			return this.Style;
		}
	}

	private int id;

	private String titre;

	private String rythme;

	private String maisonEdition;

	private Artiste artiste;

	private Compositeur compositeur;

	private Style style;

	@Column
	private Musique OeuvreOriginale;

	private String duree;

	/**
	 * @return the id
	 */
	@Id
	@GeneratedValue
	@Column(name = "MUSIQUE_ID")
	public int getId() {
		return id;
	}

	/**
	 * @param id
	 *            the id to set
	 */
	public void setId(int id) {
		this.id = id;
	}

	/**
	 * @return the titre
	 */
	@Column(name = "titre")
	public String getTitre() {
		return titre;
	}

	/**
	 * @param titre
	 *            the titre to set
	 */
	public void setTitre(String titre) {
		this.titre = titre;
	}

	/**
	 * @return the rythme
	 */
	@Column
	public String getRythme() {
		return rythme;
	}

	/**
	 * @param rythme
	 *            the rythme to set
	 */
	public void setRythme(String rythme) {
		this.rythme = rythme;
	}

	/**
	 * @return the maisonEdition
	 */
	@Column
	public String getMaisonEdition() {
		return maisonEdition;
	}

	/**
	 * @param maisonEdition
	 *            the maisonEdition to set
	 */
	public void setMaisonEdition(String maisonEdition) {
		this.maisonEdition = maisonEdition;
	}

	/**
	 * @return the artiste
	 */
	@OneToOne(cascade = CascadeType.ALL)
	public Artiste getArtiste() {
		return artiste;
	}

	/**
	 * @param artiste
	 *            the artiste to set
	 */
	public void setArtiste(Artiste artiste) {
		this.artiste = artiste;
	}

	/**
	 * @return the compositeur
	 */
	@OneToOne(cascade = CascadeType.ALL)
	public Compositeur getCompositeur() {
		return compositeur;
	}

	/**
	 * @param compositeur
	 *            the compositeur to set
	 */
	public void setCompositeur(Compositeur compositeur) {
		this.compositeur = compositeur;
	}

	/**
	 * @return the style
	 */
	@Column
	public Style getStyle() {
		return style;
	}

	/**
	 * @param style
	 *            the style to set
	 */
	public void setStyle(Style style) {
		this.style = style;
	}

	/**
	 * @return the serialversionuid
	 */
	public static long getSerialversionuid() {
		return serialVersionUID;
	}

	@Column
	public String getDuree() {
		return duree;
	}

	public void setDuree(String duree) {
		this.duree = duree;
	}

	/**
	 * @return the OeuvreOriginale
	 */
	public Musique getOeuvreOriginale() {
		return OeuvreOriginale;
	}

	/**
	 * @return oeuvreOriginale the oeuvreOriginale to set
	 */
	public void setOeuvreOriginale(Musique oeuvreOriginale) {
		OeuvreOriginale = oeuvreOriginale;
	}

}
